"""
@-*- coding: utf-8 -*-
@ python：python 3.8
@ 创建人员：ylx
@ 创建时间：2025/4/23 下午5:54
@ 内容：实现allure 报告个性化的相关方法
"""
from bs4 import BeautifulSoup
import json


# 修改allure报告的浏览器窗口标题
def set_windows_title(path_html, target_text, replacement_text):
    """
    修改allure报告的浏览器窗口标题
    :param path_html: html文件路径
    :param target_text: 被替换的文本，目的是找到位置
    :param replacement_text: 替换的文本，目的是修改成你预期的展示
    :return:
    """
    # 读取HTML文件
    with open(path_html, 'r', encoding='utf-8') as file:
        html_content = file.read()

    # 使用BeautifulSoup解析HTML
    soup = BeautifulSoup(html_content, 'html.parser')

    # 找到要修改的特定内容
    target_element = soup.find(string=target_text)  # 找到要修改的文本内容所在的元素

    # 修改内容为指定的替换文本
    if target_element:
        target_element.replace_with(replacement_text)  # 将找到的文本内容替换为指定的替换文本

    # 保存修改后的HTML
    with open(path_html, 'w', encoding='utf-8') as file:
        file.write(soup.prettify())


# 修改allure报告的报告标题
def set_report_title(path_json, key, new_value):
    """
    修改allure报告本身的标题
    :param path_json: 文件路径
    :param key: 被替换的值
    :param new_value: 替换的值
    :return:
    """
    # 读取JSON文件
    with open(path_json, 'r', encoding='utf-8') as file:
        data = json.load(file)

    # 修改特定内容
    data[key] = new_value

    # 将修改后的内容写回到文件
    with open(path_json, 'w', encoding='utf-8') as file:
        json.dump(data, file, ensure_ascii=False, indent=4)


if __name__ == "__main__":
    # 调用set_windows_title方法，设置测试报告浏览器窗口title
    html_file_path = r'D:/auto_armory/reports/index.html'
    set_windows_title(html_file_path, "Allure Report", "UI自动化测试报告")

    # 调用set_report_title方法，设置测试报告报告title
    json_file_path = r'D:/auto_armory/reports/widgets/summary.json'
    set_report_title(json_file_path, 'reportName', '房间管理系统UI自动化测试报告')
